SymfonyのConstraint class
Constraint classを作ってvalidatorを作るやつ
Symfonyにおける「Validation」は「Objectがvalidかどうか」なので、FormとEntityのvalidationの仕方が同じになる
使い所 ref
DoctrineのMapping
Entityのpropertyに対して
get, is, hasで始まるpublich methodに対して
e.g. Entityのgetter
Symfonyのform Validation
add()の中のconstraintsとかに指定する
#WIP
https://symfony.com/doc/3.4/validation.html
https://symfony.com/doc/3.4/validation/custom_constraint.html
https://symfony.com/doc/3.4/validation.html#supported-constraints
一覧
NotBlank, Length, LessThan, etc.
https://symfony.com/doc/3.4/validation/groups.html
https://qiita.com/yutachaos/items/e7b42589253d3235ae6c
自作
なんでConstraintとConstriantValidatorの両方を作らないといけないの?
Constraintを継承する方のclassの存在意義がわからない
https://symfony.com/doc/current/validation/custom_constraint.html
手順
Constrantを継承したclassを作る
何のためにあるのかわからない
messsageしか定義しないのか?
code:php
class A extends Constraint {}
ConstraintValidtorを継承したclassを作る
この中で実際のvalidataionの処理などを書く
code:php
class B extends ConstrraintValidator {}
実際のformBuilder内で呼び出すのはConstraintを継承したClassの方
code:php
->add('ohge', TextareaType::class, [
'required' => false,
'constraints' => [
new A(),
],
])
しかし、Constraint validator "B" does not exist or is not enabled. Check the "validatedBy" method in your constraint class "A".というエラーが出るため動かない
formの方ならjqueryで書いちゃったほうが楽な気もするな..mrsekut.icon
何で「他の手段ならもっと楽にできそうなこと」をこんな大変にしちゃうかな
validation時に、他のfieldの値を参照したい時
https://stackoverflow.com/questions/16478286/symfony2-validate-a-form-value-using-another-form-value/49137700
https://symfony.com/blog/new-in-symfony-2-4-a-better-callback-constraint
SymfonyのForm Eventsを使う手もある